package com.les.ufcg.gerenciador.contact_module;

import java.util.ArrayList;
import java.util.List;

import com.les.ufcg.gerenciador.R;
import com.les.ufcg.gerenciador.elementos.AdicionarEmprestimo;

import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class ContactsActivity extends ListActivity  {
	
	String[] contatos;
	private static List<Contato> lista_de_contatos;
	
	public void onCreate(Bundle b) {
		super.onCreate(b);
		
		contatos = loadContacts();
		setListAdapter(new ArrayAdapter<String>(this, R.layout.contacts_list, contatos));

		ListView lv = getListView();
		lv.setTextFilterEnabled(true);

		lv.setOnItemClickListener(new OnItemClickListener() {
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				
				String contato_id = ((TextView) view).getText().toString().split("\n")[0];
				String contato_nome = ((TextView) view).getText().toString().split("\n")[1].split(" ")[1];
				String contato_numero = ((TextView) view).getText().toString().split("\n")[2].split(" ")[1];
				String numero = "";
				if(contato_numero.contains("|")){
					numero += "Numeros: " + contato_numero;
				}
				else if(contato_numero.equals("Contato")){
					numero += "Numeros: Contato sem numeros";
				}
				else{
					numero += "Numero: " + contato_numero;
				}
				System.out.println(contato_nome);
				callDialog(contato_nome, numero,  contato_id);
				
			}

			private void callDialog(final String contato, String numero, String contato_id) {
				AlertDialog alertDialog = new AlertDialog.Builder(ContactsActivity.this).create();
				alertDialog.setTitle("Selecione um contato");
				alertDialog.setMessage("Voce quer selecionar o contato " + contato + "?" + "\n" + 
										"Nome: "+ contato + "\n" + numero+"\n"+"ID: "+ contato_id);
				alertDialog.setIcon(R.drawable.contact_add);
				alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
				      
					public void onClick(DialogInterface dialog, int which) {
						Intent intent = new Intent(getBaseContext(), AdicionarEmprestimo.class);
						intent.putExtra("Nome do contato", contato);
						startActivity(intent);
					}
				});
				alertDialog.show();
			}
		});
		
		
		
	}
	
	private String[] loadContacts(){
		lista_de_contatos = new ArrayList<Contato>();
		Cursor contacts = managedQuery(ContactsContract.Contacts.CONTENT_URI,
				null, null, null, null);
		if (contacts.moveToFirst()) {
			do {
				String contactID = contacts.getString(contacts.getColumnIndex(ContactsContract.Contacts._ID));
				String contactName = contacts.getString(contacts.getColumnIndex(ContactsContract.Data.DISPLAY_NAME));
				
				Contato contato = new Contato(contactName, "",  contactID.hashCode());
				
				String hasPhone = contacts
						.getString(contacts
								.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));

				if (hasPhone.equals("1")) {
					Cursor phones = managedQuery(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID
									+ " = " + contactID, null, null);
					String contactNumber = "";
					while (phones.moveToNext()) {
						contactNumber += phones
								.getString(phones
										.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
						if(! phones.isLast())
							contactNumber += "|";
							
						contato.setDescricao(contactNumber);
					}
					phones.close();
				} else {
					contato.setDescricao("Contato sem numeros");
				}
				lista_de_contatos.add(contato);
			} while (contacts.moveToNext());

						
		} 
//		else {
//			contatos[0] = "Nenhum contato encontrado";
//		}
		contacts.close();
		
		
		String[] s = new String[lista_de_contatos.size()];
		
		for (int i = 0; i < s.length; i++) {
			s[i] = lista_de_contatos.get(i).toString();
		}
		return s;
	}

}
